<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>

    // 数组的拓展方法 => 官方定义的 => 所有的数组都能使用的方法 (Array.prototype上)  

    // 自定义一个数组拓展方法:  => 允许所有的数组使用


    // 遍历数组 -> 每次循环时执行传入的函数 -> 函数中有三个形式参数 -> 表示循环的当前元素 下标 原数组
    Array.prototype._forEach = function (callback) {
        // this -> 调用此方法的实例化对象   list._forEach()  -> this->list
        for (var i = 0; i < this.length; i++) { // 遍历数组 (调用此方法的实例化对象)

            // this[i]  -> 循环的当前元素
            // i       -> 循环的当前下标
            // this    -> 原数组

            //  每次循环时执行传入的函数
            callback(this[i], i, this); // 函数调用时传入的三个实际参数
        }

    }


    var list = [1, 4, 7, 2, 5, 8];

    // 官方
    // 遍历数组 -> 每次循环时执行传入的函数  -> 函数中有三个形式参数 -> 表示循环的当前元素 下标 原数组 
    // list.forEach(function (item, index, array) {
    //     console.log(item, index, array);
    // })

    // 自己定义的
    list._forEach(function (item, index, array) {
        console.log(item, index, array);
        return 1111;
    })






</script>

</html>